'use strict';
/**
 * author：小小游 --- allen
 * date：2018.02.07
 * lastUpdateDate：2018.02.07
 * description：setPrototypeOf、getPrototypeOf与__proto__的基本用法
 */
// let obj = {};
//
// // result：{}
// console.log(obj.__proto__);

class User {
    constructor () {

    }
}

// 比如我随便定义一个obj
var obj = {
    getName () {
        console.log('this is a ......');
    }
};

let user = new User ();

// result：true
console.log(user.__proto__ === User.prototype);
/**
 * 1.那么下面我有这样一个需求，我想把obj对象里面的getName()方法
 * 移植到我User类里面，看我怎么做，如下：
 * 2.虽然现在各大浏览器和NodeJS都支持了__proto__原型属性，不过还
 * 是推荐使用下面那种方法去实现
 */
// user.__proto__ = obj;
// result：this is a ...... 后面出现一个undefined(???尴尬)
// console.log(user.getName());

Object.setPrototypeOf(user, obj);
// result：this is a ...... 后面出现一个undefined(???尴尬)
console.log(user.getName());
let proto = Object.getPrototypeOf(user);
// result：true
console.log(proto === user.__proto__);
